package com.young.ums.service;

import com.young.common.util.Page;
import com.young.ums.model.Role;
import java.util.List;

/**
* 角色服务接口
* Created by imrookie on 2018-9-30.
*/
public interface IRoleService {

    /**
    * 查询
    * @param obj
    * @return
    */
    List<Role> getList(Role obj);

    /**
    * 分页查询
    * @param obj
    * @param page
    * @return
    */
    List<Role> getPage(Role obj, Page page);

    /**
     * 根据单位id查询角色列表
     * @param companyId
     * @return
     */
    List<Role> getListByCompanyId(String companyId);

    /**
     * 查询指定单位下的公开角色
     * @param companyId 归属单位
     * @param open 角色公开类型,枚举:UmsConstants.RoleOpen
     * @return
     */
    List<Role> getListByCompanyIdAndOpen(String companyId, int open);

    /**
     * 查询入参单位的直属上级中开放给直属下级使用的角色
     * @param companyIds
     * @return
     */
    List<Role> getParentOpenToDirectChildRoleList(List<String> companyIds);

    /**
     * 查询入参单位的所有上级中开放给所有下级使用的角色
     * @param companyIds
     * @return
     */
    List<Role> getAllParentOpenToAllChildRoleList(List<String> companyIds);

    /**
     * 查询开放给入参单位使用的角色
     * getParentOpenToDirectChildRoleList + getAllParentOpenToAllChildRoleList
     * @param companyIds
     * @return
     */
    List<Role> getOpenToCompanyRoleList(List<String> companyIds);

    /**
    * 查询单条
    * @param id
    * @return
    */
    Role get(String id);

    /**
     * 根据角色id集合批量查询角色信息
     * @param roleIds 角色id集合
     * @return
     */
    List<Role> getListByIds(List<String> roleIds);

    /**
    * 统计数量
    * @param obj
    * @return Integer 满足xx条件的数据有多少条
    */
    int count(Role obj);

    /**
    * 修改
    * @param obj
    * @return
    */
    int update(Role obj);

    /**
    * 删除
    * @param id
    * @return
    */
    int delete(String id);

    /**
    * 批量删除
    * @param idArr
    * @return
    */
    int delete(String[] idArr);

    /**
    * 插入
    * @param obj
    * @return
    */
    int insert(Role obj);

    /**
    * 批量插入
    * @param list
    * @return
    */
    int batchInsert(List<Role> list);

    /**
     * 根据用户id查询关联角色列表
     * @param userId
     * @return
     */
    List<Role> getRoleListByUserId(String userId);

}